From a0fde0eed5df2980d2274792dd745866e47bd2ff Mon Sep 17 00:00:00 2001 From: maniacx Date: Tue, 16 May 2023 18:33:19 -0500 Subject: [PATCH] popupMenu: Replace ornament unicode with icons Ported from Sam Hewett's Merge-Request. https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2308#8714a3530d73823716c0f8334aceaabeaccd01b7 The CHECK ornament used in powerprofile and volume control is not very pleasant looking, specially if system font is changed. Replace CHECK and DOT unicode ornament with revelant icons in popupMenu. Solves issue: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6055 Part-of: --- data/gnome-shell-icons.gresource.xml | 2 ++ .../scalable/actions/ornament-check-symbolic.svg | 4 ++++ .../scalable/actions/ornament-dot-symbolic.svg | 4 ++++ data/theme/gnome-shell-sass/_drawing.scss | 3 --- data/theme/gnome-shell-sass/widgets/_popovers.scss | 11 ++++------- js/ui/popupMenu.js | 14 +++++++------- js/ui/status/backgroundApps.js | 2 +- 7 files changed, 22 insertions(+), 18 deletions(-) create mode 100644 data/icons/scalable/actions/ornament-check-symbolic.svg create mode 100644 data/icons/scalable/actions/ornament-dot-symbolic.svg diff --git a/data/gnome-shell-icons.gresource.xml b/data/gnome-shell-icons.gresource.xml index fb33b22dc..c1e575c44 100644 --- a/data/gnome-shell-icons.gresource.xml +++ b/data/gnome-shell-icons.gresource.xml @@ -5,6 +5,8 @@ scalable/actions/carousel-arrow-next-symbolic.svg scalable/actions/carousel-arrow-previous-symbolic.svg scalable/actions/dark-mode-symbolic.svg + scalable/actions/ornament-check-symbolic.svg + scalable/actions/ornament-dot-symbolic.svg scalable/actions/pointer-double-click-symbolic.svg scalable/actions/pointer-drag-symbolic.svg scalable/actions/pointer-primary-click-symbolic.svg diff --git a/data/icons/scalable/actions/ornament-check-symbolic.svg b/data/icons/scalable/actions/ornament-check-symbolic.svg new file mode 100644 index 000000000..7a9551fad --- /dev/null +++ b/data/icons/scalable/actions/ornament-check-symbolic.svg @@ -0,0 +1,4 @@ + + + + diff --git a/data/icons/scalable/actions/ornament-dot-symbolic.svg b/data/icons/scalable/actions/ornament-dot-symbolic.svg new file mode 100644 index 000000000..e9d7ec181 --- /dev/null +++ b/data/icons/scalable/actions/ornament-dot-symbolic.svg @@ -0,0 +1,4 @@ + + + + diff --git a/data/theme/gnome-shell-sass/_drawing.scss b/data/theme/gnome-shell-sass/_drawing.scss index a69d38175..1aaeb2f4d 100644 --- a/data/theme/gnome-shell-sass/_drawing.scss +++ b/data/theme/gnome-shell-sass/_drawing.scss @@ -344,9 +344,6 @@ transition-duration: 100ms; padding: $base_padding*1.5 $base_padding*2; - &:ltr {padding-left: $base_padding;} - &:rtl {padding-right: $base_padding;} - @if $flat { @include button(undecorated); box-shadow: none !important; diff --git a/data/theme/gnome-shell-sass/widgets/_popovers.scss b/data/theme/gnome-shell-sass/widgets/_popovers.scss index 6ab20c21b..6ff850a14 100644 --- a/data/theme/gnome-shell-sass/widgets/_popovers.scss +++ b/data/theme/gnome-shell-sass/widgets/_popovers.scss @@ -76,7 +76,8 @@ $submenu_bg_color: lighten($menu_bg_color, 7%); } .popup-menu-ornament { - min-width: $base_icon_size !important; + icon-size: $base_icon_size !important; + width: $base_icon_size; } // submenu specific styles @@ -103,12 +104,8 @@ $submenu_bg_color: lighten($menu_bg_color, 7%); // container for radio and check boxes .popup-menu-ornament { - @extend %heading; - width: 1.2em; - text-align: center !important; - - &:ltr { text-align: right;} - &:rtl { text-align: left;} + icon-size: $base_icon_size !important; + width: $base_icon_size; } // separator diff --git a/js/ui/popupMenu.js b/js/ui/popupMenu.js index 07be67ef3..8565036aa 100644 --- a/js/ui/popupMenu.js +++ b/js/ui/popupMenu.js @@ -89,8 +89,8 @@ var PopupBaseMenuItem = GObject.registerClass({ this._delegate = this; this._ornament = Ornament.NONE; - this._ornamentLabel = new St.Label({ style_class: 'popup-menu-ornament' }); - this.add(this._ornamentLabel); + this._ornamentIcon = new St.Icon({style_class: 'popup-menu-ornament'}); + this.add(this._ornamentIcon); this._parent = null; this._active = false; @@ -239,17 +239,17 @@ var PopupBaseMenuItem = GObject.registerClass({ this._ornament = ornament; if (ornament == Ornament.DOT) { - this._ornamentLabel.text = '\u2022'; + this._ornamentIcon.icon_name = 'ornament-dot-symbolic'; this.add_accessible_state(Atk.StateType.CHECKED); } else if (ornament == Ornament.CHECK) { - this._ornamentLabel.text = '\u2713'; + this._ornamentIcon.icon_name = 'ornament-check-symbolic'; this.add_accessible_state(Atk.StateType.CHECKED); } else if (ornament == Ornament.NONE || ornament == Ornament.HIDDEN) { - this._ornamentLabel.text = ''; + this._ornamentIcon.icon_name = ''; this.remove_accessible_state(Atk.StateType.CHECKED); } - this._ornamentLabel.visible = ornament != Ornament.HIDDEN; + this._ornamentIcon.visible = ornament !== Ornament.HIDDEN; } }); @@ -448,7 +448,7 @@ class PopupImageMenuItem extends PopupBaseMenuItem { this.add_child(this.label); this.label_actor = this.label; - this.set_child_above_sibling(this._ornamentLabel, this.label); + this.set_child_above_sibling(this._ornamentIcon, this.label); this.setIcon(icon); } diff --git a/js/ui/status/backgroundApps.js b/js/ui/status/backgroundApps.js index f5db92181..204d0e498 100644 --- a/js/ui/status/backgroundApps.js +++ b/js/ui/status/backgroundApps.js @@ -77,7 +77,7 @@ var BackgroundAppMenuItem = GObject.registerClass({ (bind, source) => [true, source !== null], null); - this.set_child_above_sibling(this._ornamentLabel, null); + this.set_child_above_sibling(this._ornamentIcon, null); this._spinner = new Spinner(16, {hideOnStop: true}); this._spinner.add_style_class_name('spinner'); -- 2.39.5